package com.ruoyi.user_info.user_profile.service.impl;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.CreditUserInfo;
import com.ruoyi.system.mapper.CreditUserInfoMapper;
import com.ruoyi.tools.LongArrayConverter;
import com.ruoyi.user_info.user_profile.domain.UserProfile;
import com.ruoyi.user_info.user_profile.mapper.UserProfileMapper;
import com.ruoyi.user_info.user_profile.service.IUserProfileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;

/**
 * 用户实名Service业务层处理
 * 
 * @author rulai
 * @date 2025-06-30
 */
@Service
public class UserProfileServiceImpl implements IUserProfileService
{
    @Autowired
    private UserProfileMapper userProfileMapper;

    @Autowired
    private CreditUserInfoMapper creditUserInfoMapper;

    @Override
    public UserProfile selectUserProfileById(Long userId) {
        return userProfileMapper.selectUserProfileById(userId);
    }

    @Override
    public int insertUserProfile(UserProfile userProfile) {
        // 先插入user_profile
        int result = userProfileMapper.insertUserProfile(userProfile);

        // 同步更新credit_user_info
        if(result > 0) {
            syncToCreditUserInfo(userProfile);
        }
        return result;
    }

    @Override
    public int updateUserProfile(UserProfile userProfile) {
        // 先更新user_profile
        int result = userProfileMapper.updateUserProfile(userProfile);

        // 同步更新credit_user_info
        if(result > 0) {
            syncToCreditUserInfo(userProfile);
        }
        return result;
    }

    /**
     * 将user_profile数据同步到credit_user_info
     */
    private void syncToCreditUserInfo(UserProfile userProfile) {
        CreditUserInfo creditUserInfo = new CreditUserInfo();
        creditUserInfo.setUserId(userProfile.getUserId());
        creditUserInfo.setIdCard(userProfile.getIdNumber()); // 身份证号
        creditUserInfo.setSex(userProfile.getGender());     // 性别
        creditUserInfo.setOccupation(userProfile.getJobType()); // 职业
        creditUserInfo.setIncome(new BigDecimal(userProfile.getAnnualIncome())); // 收入
        creditUserInfo.setCity(userProfile.getCounty());

        // 如果credit_user_info不存在则新增，存在则更新
        CreditUserInfo existing = creditUserInfoMapper.selectCreditUserInfoByUserId(userProfile.getUserId());
        if(existing == null) {
            creditUserInfoMapper.insertCreditUserInfo(creditUserInfo);
        } else {
            creditUserInfoMapper.updateCreditUserInfo(creditUserInfo);
        }
    }
//    /**
//     * 查询用户实名
//     *
//     * @param id 用户实名主键
//     * @return 用户实名
//     */
//    @Override
//    public UserProfile selectUserProfileById(Long id)
//    {
//        return userProfileMapper.selectUserProfileById(id);
//    }

    /**
     * 查询用户实名列表
     * 
     * @param userProfile 用户实名
     * @return 用户实名
     */
    @Override
    public List<UserProfile> selectUserProfileList(UserProfile userProfile)
    {
        return userProfileMapper.selectUserProfileList(userProfile);
    }

//    /**
//     * 新增用户实名
//     *
//     * @param userProfile 用户实名
//     * @return 结果
//     */
//    @Override
//    public int insertUserProfile(UserProfile userProfile)
//    {
//        userProfile.setCreateTime(DateUtils.getNowDate());
//        return userProfileMapper.insertUserProfile(userProfile);
//    }
//
//    /**
//     * 修改用户实名
//     *
//     * @param userProfile 用户实名
//     * @return 结果
//     */
//    @Override
//    public int updateUserProfile(UserProfile userProfile)
//    {
//        return userProfileMapper.updateUserProfile(userProfile);
//    }

    /**
     * 批量删除用户实名
     * 
     * @param ids 需要删除的用户实名主键
     * @return 结果
     */
    @Override
    public int deleteUserProfileByIds(Long[] ids)
    {
        return userProfileMapper.deleteUserProfileByIds(ids);
    }

    /**
     * 删除用户实名信息
     * 
     * @param id 用户实名主键
     * @return 结果
     */
    @Override
    public int deleteUserProfileById(Long id)
    {
        return userProfileMapper.deleteUserProfileById(id);
    }

    /**
     * 批量删除用户实名档案
     *
     * @param ids 需要删除的用户实名档案主键
     * @return 结果
     */
    @Override
    public int deleteUserProfileByStringIds(String ids)
    {
        return userProfileMapper.deleteUserProfileByIds(LongArrayConverter.toLongArrayLenient(ids));
    }
}
